<?php

class WfPasoEstado {
//<editor-fold defaultstate="collapsed" desc="Constantes">
  const NOMBRE_ENTIDAD = "WfPasoEstado";
  const ESTADO_PENDIENTE = 1;
  const ESTADO_APROBADO = 2;
  const ESTADO_DEVUELTO = 3;
  const ESTADO_RECHAZADO = 4;
  const ESTADO_CANCELADO = 5;
  const NOMBRE_ESTADO_PENDIENTE = "Pendiente";
  const NOMBRE_ESTADO_APROBADO = "Aprobado";
  const NOMBRE_ESTADO_DEVUELTO = "Devuelto";
  const NOMBRE_ESTADO_RECHAZADO = "Rechazado";
  const NOMBRE_ESTADO_CANCELADO = "Cancelado";

//</editor-fold>

//<editor-fold defaultstate="collapsed" desc="Campos">
  private $_id;
  private $_nombre;
  private $_tipo;
  private $_existe;
//</editor-fold>

//<editor-fold defaultstate="collapsed" desc="Propiedades">
  public function getId() { return $this->_id; }
  public function setId($value) { $this->_id = $value; }

  public function getNombre() { return $this->_nombre; }
  public function setNombre($value) { $this->_nombre = $value; }

  public function getTipo() { return $this->_tipo; }
  public function setTipo($value) { $this->_tipo = $value; }

  public function getExiste() { return $this->_existe; }
  public function setExiste($value) { $this->_existe = $value; }
//</editor-fold>
  
//<editor-fold defaultstate="collapsed" desc="Metodos Publicos">
  /**
   * constructor
   * @author VSR, 09/12/2011
   */
  public function __construct() {
    try {
        $this->_id = -1;
        $this->_nombre = "";
        $this->_tipo = "";
        $this->_existe = 0;
    } catch (Exception $e) {
      throw new Exception($e->getMessage());
    }
  }

  /**
   * obtiene registro por su id
   * @author VSR, 09/12/2011
   */
  public function obtenerPorId($id = -1) {
    try {
      //define llamada procedimiento almacenado
      $sp = "CALL spu_WfPasoEstado_ObtenerPorId({id});";

      //reemplaza marcas por valores reales
      $sp = str_replace("{id}", $id, $sp);

      //ejecuta procedimiento
      $arr = Bd::exec($sp);
      $totalRegistros = count($arr);

      //si se encontraron registros entonces se asignan
      if ($totalRegistros > 0) {
        $row = $arr[0];
        $this->_id = ( is_null($row["Id"]) ) ? -1 : $row["Id"];
        $this->_nombre = ( is_null($row["Nombre"]) ) ? "" : $row["Nombre"];
        $this->_tipo = ( is_null($row["Tipo"]) ) ? "" : $row["Tipo"];
        $this->_existe = ($this->_id == -1) ? 0 : 1;
      } else {
        $this->_id = -1;
        $this->_nombre = "";
        $this->_tipo = "";
        $this->_existe = 0;
      }
    } catch (Exception $e) {
      throw new Exception($e->getMessage());
    }
  }

  /**
   * crea o actualiza un registro
   * @author VSR, 09/12/2011
   */
  public function grabar() {
    try {
      //define llamada procedimiento almacenado
      $sp = "CALL spu_WfPasoEstado_Grabar({id},'{nombre}','{tipo}');";

      //reemplaza marcas por valores reales
      $sp = str_replace("{id}", $this->_id, $sp);
      $sp = str_replace("{nombre}", $this->_nombre, $sp);
      $sp = str_replace("{tipo}", $this->_tipo, $sp);

      //ejecuta procedimiento
      $arr = Bd::exec($sp);
      $totalRegistros = count($arr);

      //si se encontraron registros entonces se asignan
      if ($totalRegistros > 0) {
        $row = $arr[0];
        $this->_id = $row["Id"];
        $this->_existe = 1;
      } else {
        $this->_id = -1;
        $this->_existe = 0;
      }
    } catch (Exception $e) {
      throw new Exception($e->getMessage());
    }
  }

  /**
   * elimina un registro
   * @author VSR, 09/12/2011
   */
  public function eliminar() {
    try {
      //define llamada procedimiento almacenado
      $sp = "CALL spu_WfPasoEstado_Eliminar({id});";

      //reemplaza marcas por valores reales
      $sp = str_replace("{id}", $this->_id, $sp);

      //ejecuta procedimiento
      $arr = Bd::exec($sp);
      $totalRegistros = count($arr);

      //si se encontraron registros entonces se asignan
      $this->_id = -1;
      $this->_existe = 0;
    } catch (Exception $e) {
      throw new Exception($e->getMessage());
    }
  }

  /**
   * destructor
   * @author VSR, 09/12/2011
   */
  public function  __destruct() {
   // destruye el objeto
  }
  
//</editor-fold>

//<editor-fold defaultstate="collapsed" desc="Metodos Compartidos">
  /**
   * obtiene nombre del paso
   * @param <type> $idPaso
   * @return <type>
   */
  public static function obtenerNombrePaso($idPaso, $idCache, $idFlujo){
    try {
      //define llamada procedimiento almacenado
      $sp = "CALL spu_WfPasoEstado_ObtenerNombrePaso({idPaso},{idCache},{idFlujo});";

      //reemplaza marcas por valores reales
      $sp = str_replace("{idPaso}", $idPaso, $sp);
      $sp = str_replace("{idCache}", $idCache, $sp);
      $sp = str_replace("{idFlujo}", $idFlujo, $sp);

      //ejecuta procedimiento
      $valor = Bd::exec($sp);

      return $valor;
    } catch (Exception $e) {
      throw new Exception($e->getMessage());
    }
  }

//</editor-fold>
}
?>

